Matthias Clasen [Tue, 9 Feb 2021 12:11:49 +0000 (12:11 +0000)]
Merge branch 'wip/chergert/fix-bgr8-uploads' into 'master'
gl: handle B8G8R8 texture data when uploading
See merge request GNOME/gtk!3171
Christian Hergert [Mon, 8 Feb 2021 23:30:58 +0000 (15:30 -0800)]
gl: handle B8G8R8 texture data when uploading
We do not need to translate this on the CPU when we can instead push it
to the GPU in the same format and allow it to swizzle.
This fixes a huge number of memory allocations found while uploading the
GTK animation in widget-factory.
Matthias Clasen [Mon, 8 Feb 2021 20:30:27 +0000 (20:30 +0000)]
Merge branch 'wip/chergert/macos-perf-fixes' into 'master'
macos: various OpenGL performance fixes
See merge request GNOME/gtk!3170
Christian Hergert [Mon, 8 Feb 2021 17:59:59 +0000 (09:59 -0800)]
macos: improve use of swap rectangles with OpenGL
Christian Hergert [Mon, 8 Feb 2021 17:53:46 +0000 (09:53 -0800)]
macos: only flush when not attached
This makes it so we only flush the context for the NSView, not the context
that is the center of our center of the GL context spokes.
Christian Hergert [Mon, 8 Feb 2021 17:51:58 +0000 (09:51 -0800)]
macos: mark region as unlikely
Christian Hergert [Thu, 4 Feb 2021 04:53:23 +0000 (20:53 -0800)]
gsk: make gsk_render_node_get_node_type() use const
There isn't any state to modify in the type so we can use const here.
Doing so allows some of the renderer code to use const across a
number of functions so that repeated calls are elided if inlined.
Christian Hergert [Wed, 3 Feb 2021 23:00:28 +0000 (15:00 -0800)]
gsk: make render node getters pure
These do not do modify anything so they can be marked as pure to
potentially ellide calls. Since they do dereference, I do not believe
we can make them const although that is unclear since we could technically
just return a pointer + offset. Therefore it *might* be possible to also
make these G_GNUC_CONST.
Christian Hergert [Wed, 3 Feb 2021 22:49:42 +0000 (14:49 -0800)]
gsk: make render node getters const
This also removes the return if fail macros from these as a good portion
of them didn't have them anyway. I think it's fair to say that access to
these incorrectly is a programmer error.
It significantly reduces the amount of code generated into generally a
movss,ret.
Christian Hergert [Tue, 2 Feb 2021 22:41:23 +0000 (14:41 -0800)]
profiler: allow using gdk profiler functions without braces
Just compiling these out means you have to write code slightly differently
so that you don't end up with "if ();" afterwards.
This adds a "do {} while (0)" so that we're still semantically a statement
but will also compile out.
Matthias Clasen [Mon, 8 Feb 2021 15:38:48 +0000 (15:38 +0000)]
Merge branch 'wip/exalm/headerbar' into 'master'
headerbar: Don't use gtk_widget_unparent() with GtkBox
See merge request GNOME/gtk!3169
Alexander Mikhaylenko [Mon, 8 Feb 2021 13:46:35 +0000 (18:46 +0500)]
headerbar: Null-check boxes when removing window controls
Prevent a crash when show-title-buttons value changes to FALSE during
destruction.
Alexander Mikhaylenko [Mon, 8 Feb 2021 12:52:10 +0000 (17:52 +0500)]
headerbar: Don't use gtk_widget_unparent() with GtkBox
gtk_widget_unparent() is for widget implementations, it's not supposed to
be used from outside.
Matthias Clasen [Sun, 7 Feb 2021 16:13:46 +0000 (16:13 +0000)]
Merge branch 'printing-temporary-queues-gtk4' into 'master'
printing: Create temporary queues for Avahi printers
See merge request GNOME/gtk!3160
Matthias Clasen [Sun, 7 Feb 2021 15:57:11 +0000 (15:57 +0000)]
Merge branch 'focus' into 'master'
listbox: Fix handling of non-focusable rows
Closes #3633
See merge request GNOME/gtk!3152
Matthias Clasen [Sun, 7 Feb 2021 14:52:24 +0000 (14:52 +0000)]
Merge branch 'fix-x11-drop' into 'master'
x11: More dnd fixes
Closes #3654
See merge request GNOME/gtk!3166
Matthias Clasen [Sun, 7 Feb 2021 14:00:09 +0000 (09:00 -0500)]
x11: More dnd fixes
Whenever we communicate targets, we need to the union, otherwise
we don't tell the other side about our serialization. This makes
drops of images from gtk4-icon-browser to gimp and libreoffice
succeed in transferring data.
Fixes: #3654
Matthias Clasen [Sun, 7 Feb 2021 06:52:45 +0000 (06:52 +0000)]
Merge branch 'fix-x11-drop' into 'master'
Fix x11 drop
Closes #3652
See merge request GNOME/gtk!3165
Matthias Clasen [Sun, 7 Feb 2021 06:32:39 +0000 (01:32 -0500)]
x11: Pass mimetypes when creating output stream
When creating the output stream for a drop, we must
pass the mimetypes we support, otherwise the picking
of the right handler does not work.
Fixes: #3652
Matthias Clasen [Sun, 7 Feb 2021 06:31:40 +0000 (01:31 -0500)]
x11: Fix a memory leak
We ref the content formats here, so we better unref it
when done.
Matthias Clasen [Sun, 7 Feb 2021 06:30:50 +0000 (01:30 -0500)]
x11: Some code cleanups
Fix some glaring misindentation.
Matthias Clasen [Sat, 6 Feb 2021 22:35:23 +0000 (22:35 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
Implement drop-shadow css filter
See merge request GNOME/gtk!3163
Matthias Clasen [Sat, 6 Feb 2021 02:37:47 +0000 (21:37 -0500)]
Add tests for the css filter property
Test that we can parse filters and that we
don't accept invalid filters.
Matthias Clasen [Sat, 6 Feb 2021 03:59:20 +0000 (22:59 -0500)]
cssfiltervalue: Reject invalid filters
The Filter Effects Spec doesn't allow negative values
for most of the filter parameters.
Matthias Clasen [Sat, 6 Feb 2021 03:06:56 +0000 (22:06 -0500)]
cssfiltervalue: Fix blur filter interpretation
According to https://www.w3.org/TR/filter-effects-1/,
the length passed to blur() is the standard deviation,
and according to https://www.w3.org/TR/css-backgrounds-3/#shadow-blur
the blur radius is twice the standard deviation.
Matthias Clasen [Sat, 6 Feb 2021 02:37:14 +0000 (21:37 -0500)]
cssfiltervalue: Implement drop-shadows
We have all the pieces, so this is surprisingly easy.
Matthias Clasen [Sat, 6 Feb 2021 14:44:16 +0000 (09:44 -0500)]
cssshadowvalue: Add a 'filter mode'
Shadow values created by gtk_css_shadow_value_new_filter or
gtk_css_shadow_value_parse_filter interpret their radius value
as standard deviation. Add a flag for this mode, and use it
where necessary.
Matthias Clasen [Sat, 6 Feb 2021 02:36:22 +0000 (21:36 -0500)]
cssshadowvalue: Add a parsing function
Add a variant of the parse function that parses
just a single (non-box) shadow, as required for
the drop-shadow filter.
Matthias Clasen [Sat, 6 Feb 2021 14:00:32 +0000 (09:00 -0500)]
cssshadowvalue: Add gtk_css_shadow_value_pop_snapshot
This is the counterpart ot gtk_css_shadow_value_push_snapshot.
To make this easy, move the determination whether we need a
shadow out of the push function and save it.
Matthias Clasen [Sat, 6 Feb 2021 20:37:04 +0000 (15:37 -0500)]
cssshadowvalue: Drop the underscore
Rename _gtk_css_shadow_value_parse to drop the underscore.
It was the only underscore-prefixed function in this file.
Marek Černocký [Sat, 6 Feb 2021 08:44:09 +0000 (09:44 +0100)]
Updated Czech translation
Matthias Clasen [Sat, 6 Feb 2021 02:37:47 +0000 (21:37 -0500)]
Add tests for the css filter property
Test that we can parse filters.
Matthias Clasen [Sat, 6 Feb 2021 02:37:14 +0000 (21:37 -0500)]
css: Implement the drop-shadow filter
We have all the pieces, so this is surprisingly easy.
Matthias Clasen [Sat, 6 Feb 2021 02:36:22 +0000 (21:36 -0500)]
cssshadowvalue: Add a parsing function
Add a variant of the parse function that parses
just a single (non-box) shadow, as required for
the drop-shadow filter.
Matthias Clasen [Sat, 6 Feb 2021 01:15:09 +0000 (01:15 +0000)]
Merge branch 'module-ext' into 'master'
meson: use correct module file extension on macOS
Closes #3645
See merge request GNOME/gtk!3162
David Lechner [Fri, 5 Feb 2021 21:56:14 +0000 (15:56 -0600)]
meson: use correct module file extension on macOS
GModule requires the .so file extension on macOS for historic reasons.
However Meson defaults to .dylib for modules, so we need to override
it to get the correct extension.
Fixes #3645.
Marek Kasik [Fri, 5 Feb 2021 17:13:56 +0000 (18:13 +0100)]
printing: Show all Avahi advertised printers
This commit unsubscribes CUPS backend from a DBus
signal in idle when listening for new items on Avahi.
Since GDBus emits gathered signals in idle while
checking whether the signal has been unsubscribed
it could happen that a signal was not processed
because it was removed from hash table of
subscribed signals.
This caused the situation where printers advertised
on Avahi were not listed in CUPS backend sometimes.
We need those signals since this happens when switching
from a general subscription which listens to signals
for all Avahi services to a specific one which listens
to just _ipp._tcp and _ipps._tcp (chicken and egg problem).
Marek Kasik [Fri, 5 Feb 2021 17:13:34 +0000 (18:13 +0100)]
printing: Create temporary queues for Avahi printers
This change extends set of Avahi advertised printers which
works with Gtk's CUPS print backend.
It creates a temporary queue (local printer) for each
Avahi printer in CUPS instead of accessing them directly
(via CUPS library).
This makes some printers work which did not work before and
also gives users more options to change in the print dialog.
This also changes naming of printers to be in accordance with CUPS.
It uses '_' instead of '-' and has hostname appended for CUPS remote
printers.
Matthias Clasen [Fri, 5 Feb 2021 12:48:10 +0000 (12:48 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
iconbrowser: Make image dnd work again
Closes #3648
See merge request GNOME/gtk!3159
Emmanuele Bassi [Fri, 5 Feb 2021 12:14:26 +0000 (12:14 +0000)]
Merge branch 'master' into 'master'
Improve the docs of GtkWidget and GtkGrid
See merge request GNOME/gtk!2946
Matthias Clasen [Fri, 5 Feb 2021 01:46:51 +0000 (20:46 -0500)]
iconbrowser: Make image dnd work again
We need to drag a texture, not a paintable.
Fixes: #3648
Matthias Clasen [Fri, 5 Feb 2021 00:10:47 +0000 (00:10 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
docs: Rewrite the long description for GtkDialog
Closes #3646
See merge request GNOME/gtk!3156
Matthias Clasen [Fri, 5 Feb 2021 00:07:18 +0000 (00:07 +0000)]
Merge branch 'doc-typo' into 'master'
gtkshow: Fix doc typo
See merge request GNOME/gtk!3158
Maximiliano Sandoval R [Thu, 4 Feb 2021 20:02:22 +0000 (21:02 +0100)]
gtkshow: Fix doc typo
Matthias Clasen [Thu, 4 Feb 2021 18:05:28 +0000 (13:05 -0500)]
docs: Rewrite the long description for GtkDialog
As was pointed out in #3646, some of the content here
was a bit outdated.
Fixes: #3646
Matthias Clasen [Thu, 4 Feb 2021 13:28:59 +0000 (13:28 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
More work on css transition tests
See merge request GNOME/gtk!3154
Matthias Clasen [Thu, 4 Feb 2021 06:05:40 +0000 (01:05 -0500)]
Drop the installed test for now
It fails in ci, and I have no idea why.
Matthias Clasen [Thu, 4 Feb 2021 12:20:24 +0000 (12:20 +0000)]
Merge branch 'pvs-fixes' into 'master'
Pvs fixes
See merge request GNOME/gtk!3155
Matthias Clasen [Thu, 4 Feb 2021 05:40:14 +0000 (00:40 -0500)]
treemodelfilter: Drop unreachable code
We never get here. The compiler says so.
Pointed out in https://www.viva64.com/en/b/0793/
Matthias Clasen [Thu, 4 Feb 2021 05:39:34 +0000 (00:39 -0500)]
css: Drop a bit of unreachable code
We never get here. The compiler says so.
Pointed out in https://www.viva64.com/en/b/0793/
Matthias Clasen [Thu, 4 Feb 2021 05:34:05 +0000 (00:34 -0500)]
a11y: Avoid out-of-bounds access
Don't use the index before we've checked its good.
Pointed out in https://www.viva64.com/en/b/0793/
Matthias Clasen [Thu, 4 Feb 2021 05:29:51 +0000 (00:29 -0500)]
gdk: Remove a redundant check
We already know desktop_notification_id is not NULL.
Pointed out in https://www.viva64.com/en/b/0793/
Matthias Clasen [Thu, 4 Feb 2021 05:25:36 +0000 (00:25 -0500)]
messagedialog: Don't initialize twice
We don't need to set these fields more than once.
Pointed out in https://www.viva64.com/en/b/0793/
Matthias Clasen [Thu, 4 Feb 2021 05:22:52 +0000 (00:22 -0500)]
composetable: Remove a redundant check
We already know seq_index is not NULL here.
Pointed out in https://www.viva64.com/en/b/0793/
Matthias Clasen [Thu, 4 Feb 2021 05:20:26 +0000 (00:20 -0500)]
x11: A case of argument order confusion
translate_keysym was expecting its arguments the
other way around.
Pointed out in https://www.viva64.com/en/b/0793/
Matthias Clasen [Thu, 4 Feb 2021 05:17:55 +0000 (00:17 -0500)]
textbtree: Avoid line vs char count confusion
The post_insert_fixup helper function was confused about
its argument order.
Pointed out in https://www.viva64.com/en/b/0793/
Matthias Clasen [Thu, 4 Feb 2021 05:13:53 +0000 (00:13 -0500)]
listbase: Don't specify the same thing twice
We only need to set EXPLICIT_NOTIFY once.
Pointed out in https://www.viva64.com/en/b/0793/
Matthias Clasen [Thu, 4 Feb 2021 05:11:42 +0000 (00:11 -0500)]
css: Fix border value parsing
This function was not resetting computed as it meant
to because the last loop was never executed.
Pointed out in https://www.viva64.com/en/b/0793/
Matthias Clasen [Thu, 4 Feb 2021 05:09:09 +0000 (00:09 -0500)]
vulkan: Fix image uploading by regions
This code did not make sense; it was incrementing
the wrong variable.
Pointed out in https://www.viva64.com/en/b/0793/
Matthias Clasen [Thu, 4 Feb 2021 01:27:55 +0000 (20:27 -0500)]
docs: Mention css drop-shadow filter
We don't support this filter, currently.
Matthias Clasen [Wed, 3 Feb 2021 19:47:24 +0000 (14:47 -0500)]
Add more css transition tests
Matthias Clasen [Wed, 3 Feb 2021 19:32:50 +0000 (14:32 -0500)]
Rename test to transition
Thats what it is about, so name it clearly.
Add missing installed tests too.
Matthias Clasen [Wed, 3 Feb 2021 16:57:34 +0000 (11:57 -0500)]
Add more css transition tests
Test font size transitions.
Matthias Clasen [Wed, 3 Feb 2021 16:56:43 +0000 (11:56 -0500)]
testsuite: Pass GDK_DEBUG=default-settings to css tests
Otherwise, settings might creep in and change css defaults.
Matthias Clasen [Wed, 3 Feb 2021 16:56:19 +0000 (11:56 -0500)]
cssvalue: Cosmetic change
Don't return FALSE from pointer-returning functions.
Matthias Clasen [Wed, 3 Feb 2021 16:21:57 +0000 (11:21 -0500)]
Improve the css value tests
The test code had some bugs. Fix those, and
print out useful information when tests fail.
Matthias Clasen [Wed, 3 Feb 2021 16:21:23 +0000 (11:21 -0500)]
css: Fix shadow value equal
This function was not doing the right thing.
Once we are doing the right thing and not compare
shadows as unequal, some reftests that inhibit
snapshots for a few frames now hang forever, since
we are no more redrawing unnecessarily. Fix that
with an explicit queue_draw.
Matthias Clasen [Thu, 4 Feb 2021 01:38:47 +0000 (01:38 +0000)]
Merge branch 'wip/jimmac/colored-list-image-buttons' into 'master'
Adwaita: allow suggested and destructive action buttons in lists
Closes #3643
See merge request GNOME/gtk!3153
Matthias Clasen [Thu, 4 Feb 2021 01:38:09 +0000 (01:38 +0000)]
Merge branch 'ebassi/for-master' into 'master'
Graphene is a dependency of Gsk, not Gdk
See merge request GNOME/gtk!3149
Jakub Steiner [Wed, 3 Feb 2021 22:13:24 +0000 (23:13 +0100)]
Adwaita: allow suggested and destructive action buttons in lists
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/3643
Elias Projahn [Wed, 3 Feb 2021 19:54:06 +0000 (20:54 +0100)]
listbox: Fix handling of non-focusable rows
This commit modifies the gtk_list_box_row_grab_focus() implementation to
correctly return FALSE in case the row couldn't be focused. This behavior will
also be honored by gtk_list_box_row_focus() to properly handle focus in that
case. To achieve that, the method has been restructured slightly.
Closes #3633
Matthias Clasen [Wed, 3 Feb 2021 20:11:33 +0000 (20:11 +0000)]
Merge branch 'x11-dnd-fix' into 'master'
x11: Handle X-specific targets in drops
Closes #3642
See merge request GNOME/gtk!3151
Matthias Clasen [Wed, 3 Feb 2021 19:16:01 +0000 (14:16 -0500)]
x11: Handle X-specific targets in drops
This code is very similar to the handling for these
targets in the clipboard case.
Fixes: #3642
Matthias Clasen [Wed, 3 Feb 2021 15:17:34 +0000 (15:17 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
Matthiasc/for master
See merge request GNOME/gtk!3150
Emmanuele Bassi [Wed, 3 Feb 2021 14:05:27 +0000 (14:05 +0000)]
Graphene is a dependency of Gsk, not Gdk
So let's put it in the right place when building the introspection data.
Matthias Clasen [Wed, 3 Feb 2021 14:02:06 +0000 (09:02 -0500)]
Link the data url tests statically
Thats the cleaner way to test internal apis.
Matthias Clasen [Wed, 3 Feb 2021 13:56:57 +0000 (08:56 -0500)]
Add tests for css value transitions
Just a few cases for now, enough to test a recently
fixed regression with shadow transitions.
Chun-wei Fan [Wed, 3 Feb 2021 02:16:58 +0000 (02:16 +0000)]
Merge branch 'uac.meson.master' into 'master'
gtk4-update-icon-cache: Avoid UAC on 32-bit Windows
Closes #3632
See merge request GNOME/gtk!3141
Chun-wei Fan [Wed, 3 Feb 2021 02:16:58 +0000 (02:16 +0000)]
gtk4-update-icon-cache: Avoid UAC on 32-bit Windows
As the program executable name has 'update' in its filename,
gtk4-update-icon-cache.exe is considered to be an installer program on 32-bit
Windows [1], which will cause the program to fail to run unless it is running
with elevated privileges (i.e. UAC).
Avoid this situation by embedding a manifest file into the final executable
that tells Windows that this is not a program that requires elevation.
Fixes issue #3632.
[1]: https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-vista/
cc709628(v=ws.10)?redirectedfrom=MSDN,
under section "Installer Detection Technology"
Matthias Clasen [Wed, 3 Feb 2021 00:43:44 +0000 (00:43 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
css: Allow transitioning different-size shadows
See merge request GNOME/gtk!3145
Matthias Clasen [Tue, 2 Feb 2021 20:22:32 +0000 (15:22 -0500)]
css: Allow transitioning different-size shadows
The code handles it just fine. The length check was
an erronous addition.
Matthias Clasen [Tue, 2 Feb 2021 17:29:14 +0000 (17:29 +0000)]
Merge branch 'im-context-work' into 'master'
Some im context work
Closes #1004, #186, and #3521
See merge request GNOME/gtk!3143
Matthias Clasen [Tue, 2 Feb 2021 17:00:51 +0000 (12:00 -0500)]
composetable: Parse hex escapes too
This was a small omission from the Compose file
syntax that doesn't cost us much to support.
Add a test for this syntax too.
Fixes: #1004
Matthias Clasen [Tue, 2 Feb 2021 16:53:24 +0000 (11:53 -0500)]
Add tests for string values
Add a test that checks we parse values with
multiple characters correctly.
Matthias Clasen [Tue, 2 Feb 2021 06:42:08 +0000 (01:42 -0500)]
composetable: Support string values in the cache
Change the cache format to include the character
data that we need to hold string values in the table.
Matthias Clasen [Tue, 2 Feb 2021 06:15:00 +0000 (01:15 -0500)]
composetable: Don't use GSlice for big blobs
This just doesn't make sense. This will use malloc
anyway, so just call malloc directly.
Matthias Clasen [Tue, 2 Feb 2021 06:09:54 +0000 (01:09 -0500)]
composetable: Keep multi-char values
Keep string values in the table, and return them
from the check function. This commit temporarily
disables the table caching, since the cache format
does not handle string values yet.
Fixes: #186
Matthias Clasen [Tue, 2 Feb 2021 16:38:20 +0000 (16:38 +0000)]
Merge branch 'wip/silence-bounds-warnings' into 'master'
gdk/toplevelsize: Remove warnings about exceeding bounds
Closes #3035
See merge request GNOME/gtk!3142
Matthias Clasen [Tue, 2 Feb 2021 05:21:11 +0000 (00:21 -0500)]
composetable: Parse multi-char values
Rewrite the value parsing function to accept strings
that hold more than a single Unicode character.
Matthias Clasen [Tue, 2 Feb 2021 04:58:18 +0000 (23:58 -0500)]
composetable: Another step towards multi-char values
Change the parser data structures to hold a string, rather
than a gunichar. We still only put a single Unicode character
into it, currently.
Matthias Clasen [Tue, 2 Feb 2021 04:37:05 +0000 (23:37 -0500)]
composetable: Prepare for multi character values
Make it possible for gtk_compose_table_check to return
a string instead of just a single Unicode character.
Currently, we only ever return strings holding a single
character, still.
Matthias Clasen [Tue, 2 Feb 2021 04:37:22 +0000 (23:37 -0500)]
imcontext: Prepare for multi-char values
Reshuffle things so we can easily handle values
that are strings instead of just single Unicode
characters.
Matthias Clasen [Tue, 2 Feb 2021 02:52:42 +0000 (21:52 -0500)]
composetable: Check algorithmic matching
Just some spot checks, enough to verify the
fix in the previous commit.
Matthias Clasen [Tue, 2 Feb 2021 02:51:51 +0000 (21:51 -0500)]
composetable: Fix algorithmic matching
The code wasn't paying attention to (lack of) nul-termination
in one place, causing it to not match when it should.
Matthias Clasen [Tue, 2 Feb 2021 02:10:44 +0000 (21:10 -0500)]
composetable: Add tests for compact table matching
Not very exhaustive, just some spot checks.
Matthias Clasen [Tue, 2 Feb 2021 01:41:45 +0000 (20:41 -0500)]
imcontext: Code cleanup
Get rid of auxiliary check_table function.
Matthias Clasen [Tue, 2 Feb 2021 01:27:38 +0000 (20:27 -0500)]
imcontext: Move code around
Move all the checking code to gtkcomposetable.c, and
add api that we can use in tests.
Matthias Clasen [Tue, 2 Feb 2021 00:55:56 +0000 (19:55 -0500)]
composetable: Add tests for matching
This tests the api we use to match key sequences
against compose tables.
Matthias Clasen [Tue, 2 Feb 2021 00:41:07 +0000 (19:41 -0500)]
imcontext: Use gtk_compose_table_check
Use the just-introduced api.
Matthias Clasen [Tue, 2 Feb 2021 00:40:22 +0000 (19:40 -0500)]
composetable: Add api to check tables
This copies the check_table code from gtkimcontextsimple.c,
in order to have an api for tests.